package com.longe.poi;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.Date;

/**
 * 简单的写入操作
 */
public class FirstSimpleDemo {

    public static void main(String[] args) throws Exception {

        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("firstSheet");

        Row row = sheet.createRow(0);//第一行
        Cell firstCell = row.createCell(0);
        firstCell.setCellValue("字符串类型");//设置string类型的

        Cell secondCell = row.createCell(1);
        secondCell.setCellValue(3.14);//设置double类型的

        Cell thirdCell = row.createCell(2);
        thirdCell.setCellValue(false);//设置boolean类型的

        Cell fourthCell = row.createCell(3);
        fourthCell.setCellValue(new Date());//设置Date类型的

        Cell fifthCell = row.createCell(4);
        fifthCell.setCellValue(Calendar.getInstance());//设置Calendar类型的

        Cell sixthCell = row.createCell(5);
        sixthCell.setCellValue(setXssfRichTextString(workbook));//设置富文本类型的

        FileOutputStream fos = new FileOutputStream(new File("D:\\TEST_POI\\firstSimple.xlsx"));
        workbook.write(fos);
        fos.close();
        workbook.close();
    }

    private static XSSFRichTextString setXssfRichTextString(Workbook workbook) {
        XSSFRichTextString richTextString = new XSSFRichTextString("富文本字符串水平删除线下划线");

        /**********************************字符串这三个字符串****************************************************/
        Font font1 = workbook.createFont();
        // 设置字体高度 - 以1pt为单位, 设置字体为60pt
        font1.setFontHeightInPoints((short)30);
        font1.setBold(true);
        // 设置字体的字符集 - ANSI字符集
        font1.setCharSet(Font.ANSI_CHARSET);
        // 设置字体颜色为深红色
        font1.setColor(Font.COLOR_RED);
        richTextString.applyFont(3, 6, font1);

        /**********************************水平删除线这五个字符串*************************************************/
        Font font2 = workbook.createFont();
        // 设置下 标字体高度为30pt
        font2.setFontHeightInPoints((short)20);
        font2.setColor(Font.COLOR_RED);
        font2.setStrikeout(true);
        richTextString.applyFont(6, 11, font2);

        /*********************************下划线这三个字符串*****************************************************/
        Font font3 = workbook.createFont();
        // 设置下 标字体高度为30pt
        font3.setFontHeightInPoints((short)30);
        font3.setColor(Font.COLOR_RED);
        font3.setItalic(true);
        // 设置字体双下划线
        font3.setUnderline(Font.U_DOUBLE);
        richTextString.applyFont(11, 14, font3);
        return richTextString;
    }
}
